const express = require('express');
const db = require('../db');
const router = express();
const { md5 } = require('utility');

// ********************  获取用户信息  ******************/
/**
 * 请求方式: 'GET'
 * 接口地址: 'my/user/userinfo'
 * 请求参数: 无
 */
router.get('/userinfo', (req, res) => {
    // console.log(req.user); // { id: 8, iat: 1634373216, exp: 1634380416 }

    // 获取当前用户的 id
    let id = req.user.id;

    // 查询当前登陆账号的个人信息
    db(`select * from user where id=${id}`, (err, result) => {
        if (err) throw err;
        // 响应浏览器，并将查询到的信息返回
        res.send({
            code: 200,
            msg: '获取个人信息成功',
            data: result[0]
        })
    })
})



// ********************  更新用户信息  ******************/
/**
 * 请求方式: 'POST'
 * 接口地址: 'my/user/update'
 * Content-Type: applicaion/x-www-form-urlencoded
 * 请求参数: nickname | email | id
 */
router.post('/update', (req, res) => {
    // 获取客户端数据
    // console.log(req.body); // { nickname: '彭于晏', email: '330@qqq.com' }
    let { nickname, email, id } = req.body;

    // 如果用户传递的id 跟token中保存的id不一致，那么无权修改其他用户信息
    if (id != req.user.id) return res.send({ code: 400, msg: '无权修改' });

    // 根据用户的id修改信息
    let sql = `update user set username='${nickname}',email='${email}' where id=${id}`;
    db(sql, (err, result) => {
        if (err) throw err;
        // 响应客户端
        res.send({
            code: 200,
            msg: '修改成功'
        })
    })
})




// ********************  更换头像接口  ******************/
/**
 * 请求方式: POST
 * 接口地址: /my/user/avatar
 * Content-Type: applicaion/x-www-form-urlencoded
 * 请求参数: avatar (图片base64)
 */
router.post('/avatar', (req, res) => {
    // 获取图片字符串
    let user_pic = req.body.avatar;

    // 获取用户id
    let id = req.user.id;

    // 修改头像
    db(`update user set user_pic='${user_pic}' where id=${id}`, (err, result) => {
        if (err) throw err;
        res.send({
            code: 200,
            msg: '头像更换成功'
        })
    })
})



// ********************  重置密码接口  ******************/
/**
 * 请求方式: POST
 * 接口地址: /my/user/password
 * Content-Type: applicaion/x-www-form-urlencoded
 * 请求参数: password
 */
router.post('/password', (req, res) => {
    // 获取用户提交的新密码，并使用 md5 进行加密
    let { password } = req.body;
    password = md5(password);

    // 更改用户的密码
    db(`update user set password='${password}' where id=${req.user.id}`, (err, result) => {
        if (err) throw err;
        res.send({
            code: 200,
            msg: '修改密码成功'
        })
    })
})



// 导出router函数
module.exports = router;